package com.cool.springcloud.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;


/**
 * 测试 restTemplate 同步调用
 * 服务提供方如果使用的是 `spring-boot-starter-web`,服务调用方使用的是 `spring-boot-starter-webflux`,会造成同步调用异常。
 * @author dell
 */
@LoadBalancerClient(value = "CLOUD-PAYMENT-SERVICE")
public class ApplicationContextConfig {

    /**
     * 一. Spring RestTemplate 作为负载均衡器客户端
     * 1. 默认使用JDK自带的HttpURLConnection作为底层HTTP客户端实
     * 注解含义 @LoadBalanced  让这个RestTemplate在请求时拥有客户端负载均衡的能力  //将此注解注释掉，使用自己的轮询算法不使用默认的
     * @return {@link RestTemplate}
     */
    @Bean
    @ConditionalOnMissingBean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        System.out.println("===========RestTemplate");
        return new RestTemplate();
    }
}
